The invention is a method and framework for improving and simplifying communication and command between an application and a messaging system.
MQ Series Messaging System is a message-oriented middleware for providing exchange of messages and data on an enterprise wide basis. The MQ Series Messaging System is described in more detail in the following reference publications, the entire contents which are incorporated herein by reference:
MQSeries for AIX V5.0 Quick Beginnings
(.software.ibm.com/ts/mqseries/library/manuals/amqaac/AMQAAC01.HTM)
MQSeries Application Programming Guide
(.software.ibm.com/ts/mqseries/library/manuals/csqzal/CSQZAL01.HTM)
MQSeries Application Programming Reference
(.software.ibm.com/ts/mqseries/library/manuals/csqzak/CSQZAK01.HTM)
MQSeries Using C++
software.ibm.com/ts/mqseries/library/manuals/amqzan/AMQZAN01.HTM)
Some current systems are making use of CORBA technology, as a choice of strategic middle-ware deployment, which is distinct from the messaging technology provided by MQ Series. CORBA is a type of a distributed object system that is defined under the Common Object Request Broker Architecture (CORBA) specification produced by OMG. A CORBA-based distributed object system is a system running in the context of an Object Request Broker (ORB) implemented under the CORBA specification from the OMG, Revision 2.0, Revision 2.1, Revision 2.2 and Revision 2.3, all of which are incorporated herein by reference in their entirety. For purposes of this application, programs compliant with CORBA Revision 2.3, 2.2, and 2.1, or later CORBA Revisions, by definition will be viewed as compliant with CORBA Revision 2.0. Unless otherwise specified, a generic reference to the CORBA Services specification will be presumed to be OMG""s CORBA Services Revision 2.0. Similarly, a CORBA-based application is an application which is able to run in a manner compliant with the CORBA Services specification and able to operate and interact in a CORBA-based environment.
For a programmer working in a CORBA environment, the only ways to bridge to MQ Series messaging in a neighboring environment are for an application developer to gain in-depth knowledge of MQ Series, use its"" complex API""s, and apply those concepts in coding in each and every application. This knowledge must be gained system wide and employed by any programmers wishing to access the MQ Series messaging environment. This represents a substantial investment in knowledge not directly related to the primary CORBA environment in which such programmers are working and hence is a relatively inefficient use of resources.
The present invention provides a method for communicating messages between a CORBA-based application on a local system and a remote destination application on a remote system using a CORBA-based Messaging API framework in combination with an MQ Series Messaging system.
In this method, the CORBA-based application uses C++ code to communicate at least one of a group of commands selected from poll request, receive reply, send reply, send request, and send request and block for reply to the CORBA-based Messaging API framework on the local system. The Messaging API framework encapsulates a set of application programming interfaces for interfacing with an MQ Series Messaging system, wherein the set of application programming interfaces comprises a poll request API, a receive reply API, a send reply API, a send request API, and a send request and block for reply API.
The Messaging API framework uses MQ Series compliant language to communicate the selected command to a Local Queue Manager on the local system. The Local Queue Manager manages a set of queues, wherein the set of queues comprises a local request queue, a local reply queue, a local dead-letter queue, and a local transmission queue and wherein the Local Queue Manager uses the local transmission queue to provide a local address for communicating with a remote request queue and a remote reply queue;
The Local Queue Manager interprets the selected command and modifies at least one of the set of queues managed by the Local Queue Manager in response to the selected command. The Local Queue Manager communicates with a Remote Queue Manager on the remote system using the local transmission queue to update at least one of a group of queues selected from the local request queue, the local reply queue, the remote request queue and the remote reply queue.
Like the Local Queue Manager, the Remote Queue Manager manages a set of queues, wherein the set of queues comprises the remote request queue, the remote reply queue, a remote dead-letter queue, and a remote transmission queue and wherein the Remote Queue Manager uses the remote transmission queue to provide a remote address for communicating with the local request queue and the local reply queue.
The Remote Queue Manager communicates information regarding the updated queue to the remote destination application on the remote system in response to at least one command originating from the remote destination application.
Alternatively, the present invention provides a CORBA-based Messaging API framework for communicating between a CORBA-based application and an MQ Series Messaging System. The framework includes a set of application programming interfaces for interfacing with an MQ Series Messaging system encapsulated by the Messaging API framework, wherein the set of application programming interfaces includes a poll request API, a receive reply API, a send reply API, a send request API, and a send request and block for reply API. The Messaging API framework receives commands communicated by the CORBA-based application, using C++ code selected from the group of commands which comprises poll request, receive reply,, send reply, send request, and send request and block for reply. The Messaging API framework uses MQ Series compliant language to communicate such commands to the MQ Series Messaging System. The Messaging API framework uses MQ Series compliant language to receive responses to such commands from the MQ Series Messaging System. The Messaging API framework communicates the responses to the CORBA-based application.